package juego.Graficos;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.util.ArrayList;

import javax.swing.ImageIcon;
import javax.swing.JPanel;

import juego.Juego;
import juego.Encontrable.Encontrable;

import juego.Tablero.Tramo;

public class PanelTablero extends JPanel{

	private static final long serialVersionUID = 1L;
	
	public static final int LARGOLINEA = 25; 
	
	private int cantManzanasVerticales;
	private int cantManzanasHorizontales;
	private int cantFilas;
	private int cantColumnas;
	

	private Juego juego;
	
	public PanelTablero() {
		super();
	}
		
	public void setJuego(Juego juego) {
		cantManzanasVerticales = juego.getInfoTablero().darCantidadColumnas();
		cantManzanasHorizontales = juego.getInfoTablero().darCantidadFilas();
		this.juego=juego;
	}
		
	public void paint(Graphics unGrafic){
		super.paint(unGrafic);
		
		// cambiado de las columnas para el creado del tablero
		cantColumnas = (cantManzanasVerticales *2)+1;
		cantFilas = (cantManzanasHorizontales *2)+1;
		
		unGrafic.setColor(Color.WHITE);
		unGrafic.fillRect(0, 0, cantFilas*LARGOLINEA, cantColumnas*LARGOLINEA);
		
		//Creado de el marco del tablero
		unGrafic.setColor(Color.BLACK);
		unGrafic.drawLine(0, 0, 0, cantColumnas*LARGOLINEA);
		unGrafic.drawLine(0, 0, cantFilas*LARGOLINEA, 0);
		unGrafic.drawLine(0, cantColumnas*LARGOLINEA, cantFilas*LARGOLINEA, cantColumnas*LARGOLINEA);
		unGrafic.drawLine(cantFilas*LARGOLINEA, 0, cantFilas*LARGOLINEA, cantColumnas*LARGOLINEA);
		
		//Creado de cada manzana
		unGrafic.setColor(Color.BLUE);
		int i = 0;
		int j = 0;
		for (i=1;i<cantFilas;i=i+2){	
			for (j=1;j<cantColumnas;j=j+2){
				unGrafic.fillRect(i*LARGOLINEA, j*LARGOLINEA, LARGOLINEA, LARGOLINEA);
			}
		}
		//Creado de el vehiculo
		Image vehiculo = new ImageIcon(getClass().getResource
				(juego.getJugador().getVehiculo().darSuNombre()+".png")).getImage();
		
		unGrafic.drawImage(vehiculo, juego.getInfoTablero().darPosicionVehiculo().mostrarCoordenadaY()*LARGOLINEA*2,juego.getInfoTablero().darPosicionVehiculo().mostrarCoordenadaX()*LARGOLINEA*2, null);
		
		//Creado de los puntos iniciales
		Image banderaLlegada = new ImageIcon(getClass().getResource
				("bandera-llegada.png")).getImage();
		unGrafic.drawImage(banderaLlegada, juego.getInfoTablero().darPosicionLlegada().mostrarCoordenadaY()*LARGOLINEA*2,juego.getInfoTablero().darPosicionLlegada().mostrarCoordenadaX()*LARGOLINEA*2, null);
		
		//Creado de los encontrables
		if(juego.getInfoTablero().darPosicionEncontrables() != null){
			for(i = 0;i < juego.getInfoTablero().darPosicionEncontrables().size();i++){
	           Tramo unTramo = juego.getInfoTablero().darPosicionEncontrables().get(i);
	           ArrayList<Encontrable> listaDeEncontrables = unTramo.devolverEncontrables();
	           for (j = 0;j < listaDeEncontrables.size();j++){
	        	   Encontrable unEncontrable = listaDeEncontrables.get(j);
	        	   if (unEncontrable.estaActivo()){
		        	   String nombreComoString = unEncontrable.darSuNombre();
		        	   Image imagenEncontrable = new ImageIcon(getClass().getResource
		       				(nombreComoString+".png")).getImage();
		    
		        	   int iX = (unTramo.darPuntoInicial().mostrarCoordenadaX() + unTramo.darPuntoFinal().mostrarCoordenadaX()) * LARGOLINEA; 
		        	   int iY = (unTramo.darPuntoInicial().mostrarCoordenadaY() + unTramo.darPuntoFinal().mostrarCoordenadaY()) * LARGOLINEA;
		        	   unGrafic.drawImage(imagenEncontrable, iY, iX, null);
	        	   }
	           }
			}	
		}
	}
}
